package com.ruikc.study.demo.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;

import java.io.Serial;


/**
 * 发票表，存储发票的相关信息 实体类。
 *
 * @author zhiyuan
 * @since 2025-02-22
 */
@Table("invoices")
public class Invoices implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 发票的唯一标识符，自增主键
     */
    @Id(keyType = KeyType.Auto)
    private Integer invoiceId;

    /**
     * 销售方 ID，外键关联 vendor 表的 vendor_id
     */
    private Integer vendorId;

    /**
     * 发票编号
     */
    private String invoiceNumber;

    /**
     * 开票日期
     */
    private String issueDate;

    /**
     * 发票金额
     */
    private BigDecimal amount;

    /**
     * 发票税额
     */
    private BigDecimal taxAmount;

    /**
     * 发票价税合计
     */
    private BigDecimal totalWithTax;

    /**
     * 发票来源
     */
    private String invoiceSource;

    /**
     * 发票票种
     */
    private String invoiceType;

    /**
     * 发票状态，10 - 正常等
     */
    private Integer status;

    /**
     * 是否为正数发票
     */
    private Integer isPositive;

    /**
     * 发票风险等级，10 - 正常等
     */
    private Integer riskLevel;

    /**
     * 开票人的用户 ID
     */
    private Integer userId;

    /**
     * 发票备注信息
     */
    private String remarks;

    /**
     * 发票记录的创建时间
     */
    private String createdAt;

    /**
     * 发票记录的更新时间
     */
    private String updatedAt;

    /**
     * 发票记录的删除时间，若未删除则为空
     */
    private String deletedAt;

    public Integer getInvoiceId() {
        return invoiceId;
    }

    public void setInvoiceId(Integer invoiceId) {
        this.invoiceId = invoiceId;
    }

    public Integer getVendorId() {
        return vendorId;
    }

    public void setVendorId(Integer vendorId) {
        this.vendorId = vendorId;
    }

    public String getInvoiceNumber() {
        return invoiceNumber;
    }

    public void setInvoiceNumber(String invoiceNumber) {
        this.invoiceNumber = invoiceNumber;
    }

    public String getIssueDate() {
        return issueDate;
    }

    public void setIssueDate(String issueDate) {
        this.issueDate = issueDate;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getTaxAmount() {
        return taxAmount;
    }

    public void setTaxAmount(BigDecimal taxAmount) {
        this.taxAmount = taxAmount;
    }

    public BigDecimal getTotalWithTax() {
        return totalWithTax;
    }

    public void setTotalWithTax(BigDecimal totalWithTax) {
        this.totalWithTax = totalWithTax;
    }

    public String getInvoiceSource() {
        return invoiceSource;
    }

    public void setInvoiceSource(String invoiceSource) {
        this.invoiceSource = invoiceSource;
    }

    public String getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(String invoiceType) {
        this.invoiceType = invoiceType;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getIsPositive() {
        return isPositive;
    }

    public void setIsPositive(Integer isPositive) {
        this.isPositive = isPositive;
    }

    public Integer getRiskLevel() {
        return riskLevel;
    }

    public void setRiskLevel(Integer riskLevel) {
        this.riskLevel = riskLevel;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public String getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(String updatedAt) {
        this.updatedAt = updatedAt;
    }

    public String getDeletedAt() {
        return deletedAt;
    }

    public void setDeletedAt(String deletedAt) {
        this.deletedAt = deletedAt;
    }

}
